/**
 *
 */
package com.storm.lib.util;


import java.io.Serializable;
import java.util.HashMap;

import org.apache.log4j.Logger;

/**
 * 类功能: 数学方法和计算公式
 * @author johnny
 * @version 2010-10-29
 */
public class MathUtil{
	protected final Logger logger = Logger.getLogger(getClass());

//	public static Double calculator(Serializable ser,HashMap<String,Double> pars) {
//		Double result= (Double) MVEL.executeExpression(ser, pars);
//		return result;
//	}

	/**
	 *
	 * 方法功能:
	 * 更新时间:2010-10-29, 作者:johnny
	 * @param expression
	 * @param parameters
	 * @return
	 */

//	public static double caculateValueByExpression(Serializable sex,HashMap parameters){
////		//去除空格
////		expression = expression.replaceAll(" ", "");
//////		Set keys=parameters.keySet();
////		Iterator iter = parameters.entrySet().iterator();
////		//
////		while (iter.hasNext()) {
////			Map.Entry entry = (Map.Entry) iter.next();
////			String key = (String) entry.getKey();
////			Double val = (Double) entry.getValue();
////			expression=expression.replace(key, val.toString());
////		}
//		Double result = calculator(sex,parameters);
//		return result;
//	}

	public void test() {

//		String expression="if((被攻方兵阶数 - 进攻方兵阶数)<=Math.random()*10 && (被攻方兵阶数 - 进攻方兵阶数)>=0){0.05 + ( 被攻方兵阶数 - 进攻方兵阶数) * 0.005}else{0.05}";
//		HashMap<String, Double> parameters =new HashMap<String, Double>();
//		parameters.put("被攻方兵阶数", 3d);
//		parameters.put("进攻方兵阶数", 1d);
//		Double result = caculateValueByExpression(expression,parameters);
//		logger.debug("结果:"+result);

//		String expression="if((Defender敏捷值 - Attacker敏捷值) >= 0){ 5% + ( Defender敏捷值 - Attacker敏捷值 ) * 0.0006 - 攻击方的命中率 - 防御方的躲闪率;}else { 5% - 装备命中率 - 防御方的躲闪率;}";
//		String expression="兵敏捷值 / ( 兵阶 * 0.05 + 1 ) * 0.00004 + 附加暴击率";
//		HashMap<String, Double> par =new HashMap<String, Double>();
//		par.put("兵敏捷值", 100d);
//		par.put("兵阶", 1d);
//		par.put("附加暴击率", 5d);
//		Double result = caculateValueByExpression(expression,par);
//
//		logger.debug("结果:"+result.intValue());
//		criticalRate = gameCacheDAO.getFormulaLongValue("CriticalRate", par)*100d;//暴击率


	}


	public static void main(String[] args) {
		new MathUtil().test();
	}
}
